/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package pwfkasse.logik;

/**
 *
 * @author Schoof.
 */
import java.io.Serializable;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;

public class Mitarbeiter implements Serializable {

    private static final long serialVersionUID = 995929568942249445L;

    public Mitarbeiter() {
    }

    public Mitarbeiter(String vorname, String name, int bearbeiterNummer, String email, int berechtigungen, String geburtsdatum) {

        this.vorname = vorname;
        this.name = name;
        this.bearbeiterNummer = bearbeiterNummer;
        this.email = email;
        this.berechtigungen = berechtigungen;
        this.geburtsdatum = geburtsdatum;
    }
    private String name = "unbekannt";
    private String vorname = "unbekannt";
    private int bearbeiterNummer = 0;
    private String email = "unbekannt@unbekannt.de";
    private int berechtigungen = 0;
    private String geburtsdatum;

    public int getBearbeiterNummer() {
        return bearbeiterNummer;
    }

    public void setBearbeiterNummer(int bearbeiterNummer) {
        this.bearbeiterNummer = bearbeiterNummer;
    }

    public int getBerechtigungen() {
        return berechtigungen;
    }

    public void setBerechtigungen(int berechtigungen) {
        this.berechtigungen = berechtigungen;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getGeburtsdatum() {
        return geburtsdatum;
    }

    public void setGeburtsdatum(String geburtsdatum) {
        this.geburtsdatum = geburtsdatum;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getVorname() {
        return vorname;
    }

    public void setVorname(String vorname) {
        this.vorname = vorname;
    }

    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final Mitarbeiter other = (Mitarbeiter) obj;
        if (this.name != other.name && (this.name == null || !this.name.equals(other.name))) {
            return false;
        }
        if (this.vorname != other.vorname && (this.vorname == null || !this.vorname.equals(other.vorname))) {
            return false;
        }
        if (this.bearbeiterNummer != other.bearbeiterNummer) {
            return false;
        }
        if (this.email != other.email && (this.email == null || !this.email.equals(other.email))) {
            return false;
        }
        if (this.geburtsdatum != other.geburtsdatum && (this.geburtsdatum == null || !this.geburtsdatum.equals(other.geburtsdatum))) {
            return false;
        }
        return true;
    }

    public void display() {
        System.out.println("Vorname: " + vorname);
        System.out.println("Name: " + name);
        System.out.println("Bearbeiternummer : " + bearbeiterNummer);
        System.out.println("Email : " + email);
        System.out.println("Berechtigungen : " + berechtigungen);

    }

    @Override
    public int hashCode() {
        int hash = 7;
        hash = 41 * hash + (this.name != null ? this.name.hashCode() : 0);
        hash = 41 * hash + (this.vorname != null ? this.vorname.hashCode() : 0);
        hash = 41 * hash + this.bearbeiterNummer;
        hash = 41 * hash + (this.email != null ? this.email.hashCode() : 0);
        hash = 41 * hash + (this.geburtsdatum != null ? this.geburtsdatum.hashCode() : 0);
        return hash;
    }

    @Override
    public String toString() {
        return super.toString();
    }
private void writeObject(ObjectOutputStream out){
		try{
			out.defaultWriteObject();
			out.writeUTF(this.getName());
			out.writeUTF(this.getVorname());
			out.writeUTF(this.getGeburtsdatum());
			out.write(this.getBearbeiterNummer());
			out.write(this.getBerechtigungen());
		}catch(IOException e){
			e.printStackTrace();
		}
	}

    private void readObject(ObjectInputStream in) {
        try {
            in.defaultReadObject();
            Mitarbeiter ma = new Mitarbeiter();
            ma.setName(in.readUTF());
            ma.setVorname(in.readUTF());
            ma.setGeburtsdatum(in.readUTF());
            ma.setBearbeiterNummer(in.readInt());
            ma.setBerechtigungen(in.readInt());


        } catch (IOException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
	}



}